http://llvm.org/bugs/show_bug.cgi?id=10250 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@134325 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/functional b/include/functional index d6f9e86..6db7ac4 100644 --- a/include/functional +++ b/include/functional
@@ -1666,11 +1666,36 @@ typedef typename __make_tuple_indices<sizeof...(_BoundArgs)>::type __indices; public: +#ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS + + _LIBCPP_INLINE_VISIBILITY + __bind(const __bind& __b) + : __f_(__b.__f_), + __bound_args_(__b.__bound_args_) {} + + _LIBCPP_INLINE_VISIBILITY + __bind& operator=(const __bind& __b) + { + __f_ = __b.__f_; + __bound_args_ = __b.__bound_args_; + return *this; + } + _LIBCPP_INLINE_VISIBILITY __bind(__bind&& __b) : __f_(_VSTD::move(__b.__f_)), __bound_args_(_VSTD::move(__b.__bound_args_)) {} + _LIBCPP_INLINE_VISIBILITY + __bind& operator=(__bind&& __b) + { + __f_ = _VSTD::move(__b.__f_); + __bound_args_ = _VSTD::move(__b.__bound_args_); + return *this; + } + +#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS + template <class _G, class ..._BA> _LIBCPP_INLINE_VISIBILITY explicit __bind(_G&& __f, _BA&& ...__bound_args) @@ -1707,10 +1732,32 @@ public: typedef _R result_type; +#ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS + + _LIBCPP_INLINE_VISIBILITY + __bind_r(const __bind_r& __b) + : base(_VSTD::forward<const base&>(__b)) {} + + _LIBCPP_INLINE_VISIBILITY + __bind_r& operator=(const __bind_r& __b) + { + base::operator=(_VSTD::forward<const base&>(__b)); + return *this; + } + _LIBCPP_INLINE_VISIBILITY __bind_r(__bind_r&& __b) : base(_VSTD::forward<base>(__b)) {} + _LIBCPP_INLINE_VISIBILITY + __bind_r& operator=(__bind_r&& __b) + { + base::operator=(_VSTD::forward<base>(__b)); + return *this; + } + +#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS + template <class _G, class ..._BA> _LIBCPP_INLINE_VISIBILITY explicit __bind_r(_G&& __f, _BA&& ...__bound_args)